package com.gxa.mapper;


import com.gxa.common.vo.PatientSearch;
import com.gxa.common.vo.PatientVo;
import com.gxa.entity.SysPatient;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface PatientManagementMapper {

    /**
     * 查找患者列表
     * @return
     */
    List<Object> selectPatientList();

    /**
     * 增加患者
     * @param sysPatient 患者对象
     * @return 影响行数
     */
    int insertPatient(SysPatient sysPatient);

    /**
     * 转交患者
     *
     * @param patientId 患者id
     * @param userId    负责人id
     * @return 影响行数
     */
    int transPatient(@Param(value = "patientId") Integer patientId, @Param(value = "userId") Integer userId);

    /**
     * 通过id查找患者
     *
     * @param id 患者id
     * @return 视图患者对象
     */
    PatientVo selectPatientById(Integer id);

    /**
     * 通过ID查找为被删除且有效的ID
     *
     * @param id 用户ID
     * @return 患者对象视图
     */
    PatientVo selectActivePatientById(@Param("id") Integer id);

    /**
     * 通过name模糊查找患者
     *
     * @param name 患者name
     * @return 患者对象列表
     */
    List<SysPatient> selectPatientByName(String name);

    /**
     * 删除患者
     * @param id 患者id
     * @return 影响行数
     */
    Integer deletePatient(Integer id);

    /**
     * 多条件高级查找
     * @param patientSearch 查找条件
     * @return 患者列表
     */
    List<PatientVo> selectPatientListBySearch(PatientSearch patientSearch);

    /**
     * 修改患者信息
     * @param sysPatient 患者对象
     * @return 影响行数
     */
    int updatePatient(@Param("sysPatient") SysPatient sysPatient);


    /**
     * 通过身份证查找患者
     * @param idCard
     * @return
     */
    SysPatient selectActivePatientByIdCard(String idCard);

}
